/**
 * 弹窗登录
 * 
 * @date 2015年6月28日
 * @version 1.0
 * @exp
 * 	require('login',function(login){
 * 	login.init({success:function(){
 * 				
 * 				},
 * 				error:function(msg){
 * 					msg.code,msg.msg
 * 				}
 * 				});
 * })
 */
define(['artDialog', 'jquery.poshytip' ], function() {
	var config = {
		loginTml:[' <div class="nologinLayer whiteBg">'
				      ,' <p class="kaitong tl pl25"><em class="fl">登录两只老虎</em><a class="close_btn iconBg fr mr10 mt18" href="javascript:;"></a></p>'
				      ,'<div class="nologinCon">'
				      ,'<div class="loginStep">'
				         ,'<form class="fl mt30" action="/api/user/ajaxLogin"  method="post" name="login" id="loginForm">'
				            ,'<div class="userName rel">'
				               ,'<input id="username" name="username" type="text" value="" autocomplete="off" placeholder="用户名/手机号">'
				               ,'<em class="user_icon"></em>'
				            ,'</div>'
				            ,'<div class="password mt20 rel">'
				               ,'<input id="password" name="password" class="input_layer" type="password" value="" autocomplete="off" placeholder="请输入8到32位密码">'
				               ,'<em class="pwd_icon"></em>'
				            ,'</div>'
			               ,'<div class="verifiCode mt20 clearfix" id="yanzhengma" style="display: none;">'
			                    ,'<input name="needYanzhengma" value="false" type="hidden">'
			                    ,'<input type="text" placeholder="验证码" class="fl inputVerifiCode" autocomplete="off"  name="code" id="code">'
			                    ,'<div class="fl imgCode">'
			                     ,'<img src="/api/cptchaImage" id="codeTip" title="点击刷新" alt="验证码" onClick="this.src=\'/api/cptchaImage?t=\' + Math.random();" style="width:130px;height:38px;vertical-align: bottom;">'
			                    ,'</div>'
			                ,'</div>'
				           , '<input class="submitBtn mt20" id="loginForm_toLogin" type="submit" value="立即登录"/>'
				         ,'<p class="mt15 registOrForget">马上开始赚钱，<a href="http://jxb.test.twotiger.net:248/user/regist">免费注册</a>'
				       ,  '<a class="fr" href="http://jxb.test.twotiger.net:248/user/forgotPwd">忘记密码</a></p>'
				       , '</div>'
				       ,'</form>'
				     , '</div>'
				   ,'</div>'].join(''),
		success : function() {
			
		},
		error : function(result) {
			
		}
	};
	function loginValid() {
		// 登陆表单校验
		$('#username').poshytip({
			showOn: 'none',
			alignTo: 'target',
			alignX: 'right',
			alignY: 'center',
			offsetX: 5,
			showTimeout: 100
		});
		$('#password').poshytip({
			showOn: 'none',
			alignTo: 'target',
			alignX: 'right',
			alignY: 'center',
			offsetX: 5,
			showTimeout: 100
		});
		$('#codeTip').poshytip({
			showOn: 'none',
			alignTo: 'target',
			alignX: 'right',
			alignY: 'center',
			offsetX: 5,
			showTimeout: 100
		});
		var errorTime = TT.getCookie("login_error_times");
		if (errorTime >= 5) {
			$("#yanzhengma").show();
			$("#yanzhengma input[name='needYanzhengma']").val(true);
		}
	}
	function afterSubmitError(id,errorMsg){
		if(errorMsg){
			$(id).poshytip('update',errorMsg);
			$(id).poshytip('show');
		}else{
			$(id).poshytip('hide');
		}
		
	}
	
	function destroyTips(){
		$('#username').poshytip('hide');
		$('#password').poshytip('hide');
		$('#codeTip').poshytip('hide');
	}
	
	function init(options) {
		var opts = $.extend({}, config, options);
		var d = dialog({
			content :opts.loginTml,
			fixed : true,
			zIndex:999
		})
		d.addEventListener("show", function() {
			$(".ui-dialog").find("input").each(function(idx,item){
				$(this).prev("span").remove();
				if($(item).attr('placeholder')){
					$(item).placeholder({isUseSpan:true,onInput:false});
				}
			});
			$(".nologinLayer .close_btn").on('click', function(e) {
				destroyTips();
				d.close().remove();
			})
			$('#username').focus();
			loginValid();
			$("#loginForm").on("submit", function() {
			//提交表单前的错误提示
				//用户名
				if(TT.isEmpty($("#username").val()) || TT.isBlank($("#username").val())){
					$("#username").poshytip('update',"请您填写手机号码/用户名");
					$("#username").poshytip('show');
					return false;
				}else{
					$("#username").poshytip('hide');
				}
				//密码
				if(TT.isEmpty($("#password").val())){
					$("#password").poshytip('update',"请您填写密码");
					$("#password").poshytip('show');
					return false;
				}else{
					$("#password").poshytip('hide');
				}
				//验证
				var errorTime=TT.getCookie("login_error_times");
				if(errorTime>=5){
					if(TT.isEmpty($("#code").val()) || TT.isBlank($("#code").val())){
						$("#codeTip").poshytip('update',"请您填写验证码");
						$("#codeTip").poshytip('show');
						return false;
					}else{
						$("#codeTip").poshytip('hide');
					}
				}
				//提交服务器
				var $this=$(this);
				$.ajax({
					type : $this.attr("method"),
					url : $this.attr("action"),
					data : $this.serialize(),
					success : function(result) {
						if (result.code == "200") {// 登陆成功！
							opts.success && opts.success();
						} else {
							$("#codeTip").click();
							$("#code").val("");
							loginValid();
							//提交表单后的错误提醒
							if(result.code=="302" || result.code=="304"){
								$("#password").val("");
								afterSubmitError("#password",result.msg);
							}else{
								if(result.code=="303"){
									afterSubmitError("#codeTip",result.msg);
								}else{
									afterSubmitError("#username",result.msg);
								}
							}
						}
					},
					error : function(request) {
					}
				});
				destroyTips();
				return false;
			})
		})
		d.showModal();
	}
	return {
		init : function(opt) {
			init(opt);
		}
	}
})
